Direct Memory Access (DMA) is a technique for transferring data between system memory and a device without the aid of a CPU (Central Processing Unit). Instead, a specialized processor, typically referred to as a DMA controller, may handle these transfers.
A DMA operation may require multiple transfers over the bus, depending on the size of the data block to be accessed and the amount of data that may be sent over the bus per transfer. In order to set up a DMA operation, the DMA controller may obtain the physical addresses to be used for data transfers and map them into device registers. After the DMA operation is performed, the DMA controller may post-process the individual transfers. These pre-processing and post-processing operations may introduce latency into the DMA operation and significantly reduce the efficiency of the operation for all data transfers.